package main

import "fmt"

func main8() {
	names := [7]int{1, 2, 3, 4, 5, 6, 7}

	// 基于names创建一个新数组

	// 切片可以基于一个数组，灵活的创建新的数组
	// 这种方式为浅拷贝，修改names1的时候names也会变
	names1 := names[:4]
	names1[0] = 100
	fmt.Println(names) // [100 2 3 4 5 6 7]

	// 如果想让切片完成独立，得使用深拷贝，使用copy()自由函数来完成
	// copy(目标数组变量（slice）， 被拷贝的数组（slice）)
	namesCopy := make([]int, len(names))
	copy(namesCopy, names[:])
	fmt.Println(namesCopy)

	// 截取方式也可以用于字符串
	// 5、创建空切片的时候，可以明确指定切片的容量, make(类型，长度，容量)
	names3 := make([]int, 0, 20)
	names3 = append(names3, 1)
	names3 = append(names3, 2)
	fmt.Println(names3)
}
